% this code is for Jumps and Post-FOMC Announcement Returns in Currency Markets
% this code is to analyze dollar based carry trades (table 12)

clear
clc

load(using intraday and 12 hr returns)

tprxe=hwrxe(:,1:nc);

strrxe=nan(nhlf,5);     %12hr excess return: buyhold, only pre-fomc, with post, with post jump, with post but no jump

for j=1:nhlf
    temp=abs(tprxe(j,:))>=0;
    tpcount=sum(temp,2);
    if tpcount>10
        strrxe(j,1)=nanmean(tprxe(j,:),2);
        strrxe(j,2)=0;
        strrxe(j,3)=0;
        strrxe(j,4)=0;
        strrxe(j,5)=0;
        if hwindicator(j,6)+hwindicator(j,7)+hwindicator(j,8)>0     % check FOMC
            strrxe(j,2)=strrxe(j,1);
            strrxe(j,3)=strrxe(j,1);
            strrxe(j,4)=strrxe(j,1);
            strrxe(j,5)=strrxe(j,1);
        end
        if hwindicator(j,10)>0
            strrxe(j,3)=(-1)*strrxe(j,1);
            tpjdn=nan(1,nc);
            tpnojdn=nan(1,nc);
            for i=1:nc
                if hwjdnv(j-1,i)>0
                    tpjdn(1,i)=1;
                end
                if hwjdnv(j-1,i)==0
                    tpnojdn(1,i)=1;
                end
            end
            clear i
            tpjdnrxe=tpjdn.*tprxe(j,:);
            tpnojdnrxe=tpnojdn.*tprxe(j,:);
            strrxe(j,4)=(-1)*strrxe(j,1);
            strrxe(j,5)=(-1)*strrxe(j,1);
            if nansum(tpjdn,2)>7
                strrxe(j,4)=(-1)*nanmean(tpjdnrxe,2);
                strrxe(j,5)=(-1)*nanmean(tpnojdnrxe,2);
            end
        end
    end
end
clear j

for j=1:nhlf
    if hwindicator(j,6)+hwindicator(j,7)+hwindicator(j,8)+...
            hwindicator(j,9)+hwindicator(j,10)==0
        strrxe(j,1)=0;
    end
    if (strrxe(j,2)>=0)+(strrxe(j,2)<0)==0
        strrxe(j,1)=nan;
    end
end
clear j

strcumrxe=nan(nhlf,5);

% assuming monhly rebalancing

strrxebas=strrxe;
ttpp=0;
for j=4:nhlf-1
    if j==4
        strrxebas(j,1)=strrxe(j,1)-0.125*nanmean(bas(winstart(j,1),:),2);
    end
    if date(winstart(j+1,1),6)-date(winstart(j,1),6)==1
        strrxebas(j,1)=strrxe(j,1)-0.125*nanmean(bas(winstart(j,1)+npday/2-1,:),2);
        strrxebas(j+1,1)=strrxe(j+1,1)-0.125*nanmean(bas(winstart(j+1,1),:),2);
    end
    temp=abs(tprxe(j,:))>=0;
    tpcount=sum(temp,2);
    if tpcount>10
        if hwindicator(j,6)>0 && abs(strrxe(j,2))>0
            strrxebas(j,2)=strrxe(j,2)-0.125*nanmean(bas(winstart(j,1),:),2);
            strrxebas(j,3)=strrxebas(j,2);
            strrxebas(j,4)=strrxebas(j,2);
            strrxebas(j,5)=strrxebas(j,2);
        end
        if hwindicator(j,8)>0 && abs(strrxe(j,2))>0
            strrxebas(j,2)=strrxe(j,2)-0.125*nanmean(bas(winstart(j,1)+npday/2-1,:),2);
            strrxebas(j,3)=strrxebas(j,2);
            strrxebas(j,4)=strrxebas(j,2);
            strrxebas(j,5)=strrxebas(j,2);
        end
        if hwindicator(j,10)>0 && abs(strrxe(j,3))>0
            strrxebas(j,3)=strrxe(j,3)-0.125*nanmean(bas(winstart(j,1),:),2)-...
                0.125*nanmean(bas(winstart(j,1)+npday/2-1,:),2);
            strrxebas(j,4)=strrxebas(j,3);
            strrxebas(j,5)=strrxebas(j,3);
            if abs(strrxe(j,3)-strrxe(j,4))>0
                tpjdn=nan(1,nc);
                tpnojdn=nan(1,nc);
                for i=1:nc
                    if hwjdnv(j-1,i)>0
                        tpjdn(1,i)=1;
                    end
                    if hwjdnv(j-1,i)==0
                        tpnojdn(1,i)=1;
                    end
                end
                clear i
                tpbasb=tpjdn.*bas(winstart(j,1),:);
                tpbasc=tpjdn.*bas(winstart(j,1)+npday/2-1,:);
                strrxebas(j,4)=strrxe(j,4)-0.125*nanmean(tpbasb,2)-...
                    0.125*nanmean(tpbasc,2);
                tpbasd=tpnojdn.*bas(winstart(j,1),:);
                tpbase=tpnojdn.*bas(winstart(j,1)+npday/2-1,:);
                strrxebas(j,5)=strrxe(j,5)-0.125*nanmean(tpbasd,2)-...
                    0.125*nanmean(tpbase,2);
            end
        end
    end
        
end
clear i

repdolcarry=nan(10,5);      % table 12
repdolcarry(1,:)=252*2*nanmean(strrxe,1);
repdolcarry(2,:)=sqrt(252*2)*nanstd(strrxe,1);
repdolcarry(3,:)=repdolcarry(1,:)./repdolcarry(2,:);
repdolcarry(5,:)=252*2*nanmean(strrxebas,1);
repdolcarry(6,:)=sqrt(252*2)*nanstd(strrxebas,1);
repdolcarry(7,:)=repdolcarry(5,:)./repdolcarry(6,:);
